#pragma once
#include "aip-cpp-sdk/speech.h"
#include "logger.hpp"

namespace ken_im
{
class ASRClient
{
  public:
    using ptr = std::shared_ptr<ASRClient>;
    ASRClient( const std::string &app_id, const std::string &api_key,
               const std::string &secret_key )
        : _client( app_id, api_key, secret_key )
    {
    }
    std::string recognize( const std::string &speech_data, std::string &err )
    {
        Json::Value result =
            _client.recognize( speech_data, "pcm", 16000, aip::null );
        if ( result["err_no"].asInt() != 0 )
        {
            LOG_ERROR( "语音识别失败：{}", result["err_msg"].asString() );
            err = result["err_msg"].asString();
            return std::string();
        }
        return result["result"][0].asString();
    }

  private:
    aip::Speech _client;
};
} // namespace ken_im